//#include<stdio.h>
//void solve(int arr[], int len, int* num1, int* num2)
//{
//	int sum = 0;
//	for (int i = 0; i < len; i++) sum ^= arr[i];
//	int pos = -1;
//	for (int i = 0; i < 32; i++)
//	{
//		if (((sum >> i) & 1) == 1) {
//			pos = i;
//			break;
//		}
//	}
//	if (pos == -1) {
//		*num2 = -1;
//		*num2 = -1;
//		return;
//	}
//	for (int i = 0; i < len; i++) {
//		if ((arr[i] >> pos) & 1 == 1) {
//			*num1 ^= arr[i];
//		}
//		else {
//			*num2 ^= arr[i];
//		}
//	}
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,1,2,3,4,6 };
//	int len = sizeof(arr) / sizeof(arr[0]);
//	int ret1 = 0;
//	int ret2 = 0;
//	solve(arr, len, &ret1, &ret2);
//	printf("%d %d", ret1, ret2);
//	return 0;
//}

//#include<stdio.h>
//char* my_strncpy(char* dest, const char* src, int len)
//{
//	int i = 0;
//	for (; src[i] != '\0' && i < len; i++)
//	{
//		dest[i] = src[i];
//	}
//	dest[i] = '\0';
//	return dest;
//}
//int main()
//{
//	char arr[10] = { 0 };
//	my_strncpy(arr, "abcdef", 4);
//	printf(arr);
//	return 0;
//}

//#include<stdio.h>
//char* my_strncat(char* dest, const char* src, int n)
//{
//	char* p = dest;
//	while (*p)
//	{
//		p++;
//	}
//	int i = 0;
//	for (; src[i] != '\0' && i < n; i++)
//	{
//		p[i] = src[i];
//	}
//	p[i] = '\0';
//	return dest;
//}
//int main()
//{
//	char arr[20] = "haha";
//	my_strncat(arr, "abcdef", 4);
//	printf(arr);
//	return 0;
//}

//#include<stdio.h>
//#include<stdlib.h>
//#include<ctype.h>
//int state = 0;
//int my_atoi(const char* str)
//{
//	while (isspace(*str)) str++;
//	int flg = 1;
//	if (*str == '-') {
//		flg = -1;
//		str++;
//	}
//	else if (*str == '+') {
//		flg = 1;
//		str++;
//	}
//	long long num = 0;
//	while (*str != '\0')
//	{
//		if (isdigit(*str)) {
//			num = num * 10 + (*str - '0') * flg;
//			if (num > INT_MAX) {
//				return INT_MAX;
//			}
//			if (num < INT_MIN) {
//				return INT_MIN;
//			}
//		}
//		else {
//			return (int)num;
//		}
//		str++;
//	}
//	if (*str == '\0') {
//		state = 1;
//	}
//	return (int)num;
//}
//int main()
//{
//	int num = my_atoi("      1234123412341234");
//	if (state == 1) {
//		printf("正常转化：%d", num);
//	}
//	else {
//		printf("非正常转化：%d", num);
//	}
//	return 0;
//}

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int state = 0;
int my_atoi(const char* str)
{
	while (isspace(*str)) str++;
	int flg = 1;
	if (*str == '-') {
		flg = -1;
		str++;
	}
	else if (*str == '+') {
		flg = 1;
		str++;
	}
	long long num = 0;
	while (*str != '\0')
	{
		if (isdigit(*str)) {
			num = num * 10 + (*str - '0') * flg;
			if (num > INT_MAX) {
				return INT_MAX;
			}
			if (num < INT_MIN) {
				return INT_MIN;
			}
		}
		else {
			return (int)num;
		}
		str++;
	}
	if (*str == '\0') {
		state = 1;
	}
	return (int)num;
}
int main()
{
	int num = my_atoi("      1234123412341234");
	if (state == 1) {
		printf("正常转化：%d", num);
	}
	else {
		printf("非正常转化：%d", num);
	}
	return 0;
}